#include "musicslider.h"
#include "ui_musicslider.h"
#include<QMouseEvent>

///////////////////////////////////////////
//右侧界面中的音乐播放进度条///////////////////
//////////////////////////////////////////

MusicSlider::MusicSlider(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::MusicSlider)
{
    ui->setupUi(this);
    maxWidth=width();
}

MusicSlider::~MusicSlider()
{
    delete ui;
}

//修改进度条的位置
void MusicSlider::moveSlider()
{
    ui->outLine->setGeometry(ui->outLine->x(),ui->outLine->y(),currentPos,ui->outLine->height());
}

//根据传入的时间比例修改进度条的位置(进度条同步播放时间)
void MusicSlider::setStep(float bf)
{
    currentPos=bf*maxWidth;
    moveSlider();
}

//重写鼠标按下事件-->移动进度条
void MusicSlider::mousePressEvent(QMouseEvent *event)
{
    (void)event;
    //更新当前进度条位置
    currentPos=event->pos().x();
    //修改进度条的位置
    moveSlider();
}

//重写鼠标移动事件-->移动进度条
void MusicSlider::mouseMoveEvent(QMouseEvent *event)
{
    (void)event;
    //检测如果在进度条外进行拖拽则直接返回,进度条内进行拖拽进行相应的逻辑处理
    QRect rect=QRect(0,0,this->width(),this->height());
    QPoint point=event->pos();
    if(!rect.contains(point))return;    //QRect类contains()会判断传入点的坐标是否在rect内

    if(event->buttons()==Qt::LeftButton)    //判断是否是鼠标左键进行按下
    {
        //更新当前进度条位置并验证进度条位置的合理性
        currentPos=event->pos().x();
        if(currentPos<0)currentPos=0;
        else if(currentPos>maxWidth)currentPos=maxWidth;
        //修改进度条的位置
        moveSlider();
    }
}

//重写鼠标释放事件-->移动进度条并修改当前时间显示标签
void MusicSlider::mouseReleaseEvent(QMouseEvent *event)
{
    (void)event;
    //更新当前进度条位置
    currentPos=event->pos().x();
    //修改进度条的位置
    moveSlider();
    //发送信号修改当前媒体播放时间以及当前时间显示标签
    emit setMusicSliderPosition((float)currentPos/(float)maxWidth);
}


//QFrame???
